package ynu.edu.dish.service;

import ynu.edu.dish.dto.DishSpecDTO;
import ynu.edu.dish.vo.DishSpecVO;

import java.util.List;

/**
 * 菜品规格服务接口
 */
public interface DishSpecService {

    /**
     * 创建菜品规格
     *
     * @param dishSpecDTO 菜品规格信息
     * @return 菜品规格信息
     */
    DishSpecVO createDishSpec(DishSpecDTO dishSpecDTO);

    /**
     * 更新菜品规格
     *
     * @param dishSpecDTO 菜品规格信息
     * @return 菜品规格信息
     */
    DishSpecVO updateDishSpec(DishSpecDTO dishSpecDTO);

    /**
     * 获取菜品规格信息
     *
     * @param id 菜品规格ID
     * @return 菜品规格信息
     */
    DishSpecVO getDishSpecById(Long id);

    /**
     * 删除菜品规格
     *
     * @param id 菜品规格ID
     * @return 是否成功
     */
    boolean deleteDishSpec(Long id);

    /**
     * 根据菜品ID查询规格列表
     *
     * @param dishId 菜品ID
     * @return 规格列表
     */
    List<DishSpecVO> getDishSpecsByDishId(Long dishId);

    /**
     * 根据菜品ID和状态查询规格列表
     *
     * @param dishId 菜品ID
     * @param status 状态
     * @return 规格列表
     */
    List<DishSpecVO> getDishSpecsByDishIdAndStatus(Long dishId, Integer status);

    /**
     * 更新菜品规格状态
     *
     * @param id 菜品规格ID
     * @param status 状态：0-禁用，1-启用
     * @return 是否成功
     */
    boolean updateDishSpecStatus(Long id, Integer status);

    /**
     * 批量创建菜品规格
     *
     * @param dishSpecDTOs 菜品规格信息列表
     * @return 菜品规格信息列表
     */
    List<DishSpecVO> batchCreateDishSpecs(List<DishSpecDTO> dishSpecDTOs);

    /**
     * 根据菜品ID删除所有规格
     *
     * @param dishId 菜品ID
     * @return 是否成功
     */
    boolean deleteAllByDishId(Long dishId);
} 